﻿#pragma once
#include <QObject>

class FavoriteAttributes;
class EquipmentAction;

class FavoriteAttributesPrivate
{
	using values_map = std::map<int, quint16>;
	Q_DECLARE_PUBLIC(FavoriteAttributes)
public:
	FavoriteAttributesPrivate(FavoriteAttributes* fa);
	bool isOnlyinFavorite(int address) const;
	void r1(quint16 value);
	void r2(quint16 value);
	void r3(quint16 value);
	void r4(quint16 value);
	void r5(quint16 value);
	void r6(quint16 value);
	void r7(quint16 value);
	void r8(quint16 value);
	void r9(quint16 value);
	void r10(quint16 value);
	void r11(quint16 value);
	void r12(quint16 value);
	void r13(quint16 value);
	void r14(quint16 value);
	void r15(quint16 value);
	void r16(quint16 value);
	void r17(quint16 value);
	void r18(quint16 value);
	void r19(quint16 value);
	void r20(quint16 value);
	void r21(quint16 value);
	void r22(quint16 value);
	void r23(quint16 value);
	void r24(quint16 value);
	void r25(quint16 value);
	void r26(quint16 value);
	void r27(quint16 value);
	void r28(quint16 value);
	void r29(quint16 value);
	void r30(quint16 value);
	void r31(quint16 value);
	void r32(quint16 value);
	void r33(quint16 value);

	void r50(quint16 value);
	void r51(quint16 value);
	void r52(quint16 value);
	void r53(quint16 value);
	void r54(quint16 value);
	void r55(quint16 value);
	void r56(quint16 value);
	void r57(quint16 value);
	void r58(quint16 value);
	void r59(quint16 value);
	void r60(quint16 value);
	void r61(quint16 value);
	void r62(quint16 value);
	void r63(quint16 value);
	void r64(quint16 value);
	void r65(quint16 value);
	void r66(quint16 value);

	void r70(QList<quint16> values);
	void r72(QList<quint16> values);
	void r74(QList<quint16> values);

	void r108(quint16 value);
	void r109(QList<quint16> values);
	void r121(QList<quint16> values);
	void r125(quint16 value);
	void r126(quint16 value);
	void r166(quint16 value);

	void r201(QList<quint16> values);
	void r203(QList<quint16> values);
	void r205(QList<quint16> values);
	void r207(QList<quint16> values);
	void r223(QList<quint16> values);
	void r225(QList<quint16> values);
private:
	std::vector<int> const m_favoriteReg;	//收藏组中所有寄存器地址，组合寄存器属性的填写起始地址
	std::map<int, int> const m_needBytes;   //需要大于sizeof(quint16)字节来解析的寄存器首地址，映射需要大小
	std::map<int, bool> const m_isOnlyFavoriteMap;	//int寄存器地址，bool为true仅存在收藏属性中
	values_map m_vm;
	FavoriteAttributes* q_ptr = nullptr;
};
